import { defineConfig } from 'vite';
import { resolve } from 'path';
import dts from 'vite-plugin-dts';

// https://vite.dev/config/
export default defineConfig({
  build: {
    // cssMinify: false, // css压缩
    lib: {
      entry: resolve(__dirname, 'src/index.ts'),
      name: 'PGMUtils',
      formats: ['es', 'umd'],
      fileName: (format) => `code-assisted-toolbox.${format}.js`
    },
    // 确保生成sourcemap
    sourcemap: true,
    rollupOptions: {
      // 确保外部化处理那些你不想打包进库的依赖
      output: {
        // 确保CSS文件被正确输出
        // assetFileNames: 'assets/[name].[ext]',
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          // react: 'React',
          // 'react-dom': 'ReactDOM',
        }
      }
    },
    cssCodeSplit: true, // 确保启用
    minify: false,
  },
  css: {
     modules: {
      // 自定义匹配规则（可选）
      generateScopedName: '[name]__[local]___[hash:base64:5]',
      scopeBehaviour: 'local',
      localsConvention: 'camelCase' // 可选：类名转换规则
    },
    preprocessorOptions: {
      less: {
        // 这里可以添加 Less 的全局变量、混入等配置
        //  additionalData: `@import "@/styles/variables.less";`, // 全局引入
        // 全局变量
        // globalVars: {
        //   primary: '#1890ff'
        // },
        // 其他 Less 选项
        math: 'always',
        // 支持内联 JavaScript
        javascriptEnabled: true
      }
    }
  },
  plugins: [
    dts({
      tsconfigPath: './tsconfig.app.json', // 指定tsconfig文件目录
      insertTypesEntry: true,
      // staticImport: true, 
      // strictOutput: true,  
      // rollupTypes: true,
      // 明确指定主入口文件路径
      // entryRoot: resolve(__dirname, 'src/index.ts'), // 绝对路径指定入口根目录
      // outDir: resolve(__dirname, 'dist'), // 显式指定输出目录
      // copyDtsFiles: true,
      copyDtsFiles: true,
      // 跳过类型检查可避免第三方库类型错误
      compilerOptions: {
        skipLibCheck: true
      },
      outDir: './dist/types',
      // beforeWriteFile: (filePath, content) => {
      //   // 调试输出
      //   console.log(`Generating: ${filePath}`);
      //   console.log(`content: ${content}`);
      //   return { filePath, content };
      // },       // 强制合并类型     // 启用静态导入分析
      exclude: ['**/__tests__/**' ],
      include: ['src/**/*'], // 指定包含的文件
      // include: ['src/**/*', 'types/**/*'], // 指定包含的文件
    }),
  ],
})
